A bar code symbol is a coded pattern of indicia comprising a series of bars and spaces having different light reflecting characteristics. Bar code scanning systems electro-optically transform the indicia into electrical signals, which are decoded into alphanumerical characters. Characters are typically represented in digital form and are provided as an input to a data processing system for applications, such as point-of-sale processing and inventory control. Scanning systems of this general type have been disclosed, for example, in U.S. Pat. Nos. 4,251,798; 4,369,361; 4,387,297; 4,409,470; 4,760,248; and 4,896,026, all of which have been assigned to the same assignee as the instant application.
Bar code symbols are formed from a series of bars and spaces, called elements, which have a variety of possible widths. The specific arrangement of elements defines the character represented according to a set of rules and definitions. To encode a desired sequence of characters, groups of bar code characters are concatenated to form a bar code symbol, with each character of the message represented by a corresponding group of elements. In some symbologies a “start” and “stop” character is used to indicate where the bar code begins and ends. A “center guard bar” indicates the location of the center of the bar code. There are a number of symbologies in use, for example, UPC/EAN, Code 39, Code 128, Codabar, and Interleaved 2 of 5.
In typical laser scanning systems, a light source, such as a laser or laser diode, produces a beam which is directed by a lens or similar optical components along a light path toward a target that includes a bar code symbol on the surface. The beam produces a spot on the target. To scan with a laser system, the spot may be deflected by a mirror that is moved with an oscillating or rotating motor to produce a line or series of lines or curved paths across the symbol. Alternately, the light may be deflected by holographic or other means. A portion of the light that is reflected off the symbol is detected by a sensor which may be positioned in the scanner. The sensor converts the reflected light into an electrical signal which is converted to a digital representation by electronic circuitry. For example, an analog electrical signal from the photo detector may be converted into a pulse width modulated digital signal, with pulse widths corresponding to the physical widths of the bars and spaces.
In an imaging scanner, an image is made of the target surface containing the bar code. The image is stored as pixel data in an array of sensors such as CCD or CMOS sensors. Virtual scans are made of the pixel data to attempt to decode the bar code. Data from the virtual scan is transmitted to the decoder. After several unsuccessful “scans” the image may be discarded and another image may be taken for decoding.
The decoder receives the pulse width modulated digital signal from the scanner, and attempts to decode the scan. If the start and stop characters and all of the characters between them are decoded successfully, the decoding process is finished. Otherwise, the decoder receives a next scan and attempts to decode it. Each attempt is based on the signal received during a single scan. The process continues until a scan is completely decoded or until no more scans are available.
In many instances, data from a single scan is not sufficient to decode the bar code. For example, a scan line or series of scan lines may not always entirely cross the bar code symbol. This may happen when a scanner is in a fixed position next to a conveyor with containers, each of which has a bar code symbol printed on a label. If the label is skewed with respect to the scan line, there may be no single scan line which includes both the start and stop characters. In other situations, part of the bar code may be obscured, damaged or insufficiently illuminated to produce a complete scan line. These incomplete scan lines, called fragments, were discarded until techniques were developed to stitch or combine the fragments together, so that the decoding process can be completed.
Several basic techniques have been employed to combined fragments. One technique, known as block decoding, involves combining predefined regions or blocks in a number of scans. For example, a symbology such as UPC has start, stop, and center characters. If one fragment includes a start and a center, and another fragment includes a center and stop, these two “blocks” can be combined to form a complete scan.